{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "#easydict模块用于以属性的方式访问字典的值\n",
    "from easydict import EasyDict as edict\n",
    "#glob模块主要用于查找符合特定规则的文件路径名，类似使用windows下的文件搜索\n",
    "import glob\n",
    "#os模块主要用于处理文件和目录\n",
    "import os\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import mindspore\n",
    "#导入mindspore框架数据集\n",
    "import mindspore.dataset as ds\n",
    "#vision.c_transforms模块是处理图像增强的高性能模块，用于数据增强图像数据改进训练模型。\n",
    "import mindspore.dataset.vision.c_transforms as CV\n",
    "#c_transforms模块提供常用操作，包括OneHotOp和TypeCast\n",
    "import mindspore.dataset.transforms.c_transforms as C\n",
    "from mindspore.common import dtype as mstype\n",
    "from mindspore import context\n",
    "#导入模块用于初始化截断正态分布\n",
    "from mindspore.common.initializer import TruncatedNormal\n",
    "from mindspore import nn\n",
    "from mindspore.train import Model\n",
    "from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor, TimeMonitor\n",
    "from mindspore.train.serialization import load_checkpoint, load_param_into_net\n",
    "from mindspore import Tensor\n",
    "# 设置MindSpore的执行模式和设备\n",
    "context.set_context(mode=context.GRAPH_MODE, device_target=\"GPU\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "cfg = edict({\n",
    "    'data_path': 'flower_photos',\n",
    "    'data_size':3670,\n",
    "    'image_width': 100,  # 图片宽度\n",
    "    'image_height': 100,  # 图片高度\n",
    "    'batch_size': 32,\n",
    "    'channel': 3,  # 图片通道数\n",
    "    'num_class':5,  # 分类类别\n",
    "    'weight_decay': 0.01,\n",
    "    'lr':0.0001,  # 学习率\n",
    "    'dropout_ratio': 0.5,\n",
    "    'epoch_size': 400,  # 训练次数\n",
    "    'sigma':0.01,\n",
    "\n",
    "    'save_checkpoint_steps': 1,  # 多少步保存一次模型\n",
    "    'keep_checkpoint_max': 1,  # 最多保存多少个模型\n",
    "    'output_directory': './',  # 保存模型路径\n",
    "    'output_prefix': \"checkpoint_classification\"  # 保存模型文件名字\n",
    "})"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [],
   "source": [
    "# 解压数据集，只需要第一次运行时解压，第二次无需再解压\n",
    "# !wget https://ascend-professional-construction-dataset.obs.myhuaweicloud.com/deep-learning/flower_photos.zip\n",
    "# !unzip flower_photos.zip"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[WARNING] ME(10856:140395946026816,MainProcess):2022-11-11-15:15:04.556.749 [mindspore/dataset/core/validator_helpers.py:804] 'RandomCropDecodeResize' from mindspore.dataset.vision.c_transforms is deprecated from version 1.8 and will be removed in a future version. Use 'RandomCropDecodeResize' from mindspore.dataset.vision instead.\n",
      "[WARNING] ME(10856:140395946026816,MainProcess):2022-11-11-15:15:04.557.411 [mindspore/dataset/core/validator_helpers.py:804] 'HWC2CHW' from mindspore.dataset.vision.c_transforms is deprecated from version 1.8 and will be removed in a future version. Use 'HWC2CHW' from mindspore.dataset.vision instead.\n",
      "[WARNING] ME(10856:140395946026816,MainProcess):2022-11-11-15:15:04.557.831 [mindspore/dataset/core/validator_helpers.py:804] 'TypeCast' from mindspore.dataset.transforms.c_transforms is deprecated from version 1.8 and will be removed in a future version. Use 'TypeCast' from mindspore.dataset.transforms instead.\n"
     ]
    }
   ],
   "source": [
    "#从目录中读取图像的源数据集。\n",
    "de_dataset = ds.ImageFolderDataset(cfg.data_path,\n",
    "                                   class_indexing={'daisy':0,'dandelion':1,'roses':2,'sunflowers':3,'tulips':4})\n",
    "#解码前将输入图像裁剪成任意大小和宽高比。\n",
    "transform_img = CV.RandomCropDecodeResize([cfg.image_width,cfg.image_height], scale=(0.08, 1.0), ratio=(0.75, 1.333))  #改变尺寸\n",
    "#转换输入图像；形状（H, W, C）为形状（C, H, W）。\n",
    "hwc2chw_op = CV.HWC2CHW()\n",
    "#转换为给定MindSpore数据类型的Tensor操作。\n",
    "type_cast_op = C.TypeCast(mstype.float32)\n",
    "#将操作中的每个操作应用到此数据集。\n",
    "de_dataset = de_dataset.map(input_columns=\"image\", num_parallel_workers=8, operations=transform_img)\n",
    "de_dataset = de_dataset.map(input_columns=\"image\", operations=hwc2chw_op, num_parallel_workers=8)\n",
    "de_dataset = de_dataset.map(input_columns=\"image\", operations=type_cast_op, num_parallel_workers=8)\n",
    "de_dataset = de_dataset.shuffle(buffer_size=cfg.data_size)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[WARNING] ME(10856:140395946026816,MainProcess):2022-11-11-15:15:04.564.553 [mindspore/dataset/engine/datasets.py:1123] Dataset is shuffled before split.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练数据集数量： 2912\n",
      "测试数据集数量： 704\n",
      "通道数/图像长/宽： (3, 100, 100)\n",
      "一张图像的标签样式： 4\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 2 Axes>",
      "image/png": "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cqU89thjh7tJh401a9bI2WefLel0Wrq6uuQd73iHbNiwAdYplUqyevVqaW9vl6amJrnyyiulv79/kj0eGXzhC1+QUCgk1113Xf1v2k/72LVrl/z5n/+5tLe3SyKRkJNPPlmeeOKJen0QBHLTTTfJvHnzJJFIyMUXXywvv/zyYWzxocfzPPn4xz8uy5Ytk0QiIcuXL5fPfOYzkKBD+0k5rARzkO9973tBNBoN/u///b/BCy+8ELz//e8PWlpagv7+/sPdtMPCJZdcEnz7298Onn/++eDpp58OLrvssmDx4sXB+Ph4fZ2/+qu/ChYtWhTcc889wRNPPBGce+65wXnnnXcYW314eeyxx4KlS5cGp5xySvCRj3yk/nftpyAYHh4OlixZErz73e8OHn300WDLli3BL3/5y2DTpk31db7whS8EmUwm+MlPfhI888wzwe/93u8Fy5YtC4rF4mFs+aHlc5/7XNDe3h7ceeedwdatW4M77rgjaGpqCv75n/+5vo72k3I4mZMv8HPOOSdYvXp1vex5XjB//vxgzZo1h7FVc4eBgYFARIL7778/CIIgyGazQSQSCe644476Oi+99FIgIsHatWsPVzMPG7lcLjjmmGOCu+++O/id3/md+gtc+2kfH/3oR4MLLrhg0nrf94Oenp7gH/7hH+p/y2azQSwWC7773e8eiibOCS6//PLgve99L/ztiiuuCK666qogCLSflMPPnDOhVyoVWbdunVx88cX1vzmOIxdffLGsXbv2MLZs7jA6OioiIm1tbSIism7dOqlWq9BnK1askMWLFx+RfbZ69Wq5/PLLoT9EtJ9e5b//+7/lrLPOkj/6oz+Srq4uOf300+Wb3/xmvX7r1q3S19cH/ZTJZGTlypVHVD+dd955cs8998jGjRtFROSZZ56RBx98UC699FIR0X5SDj9zLhvZ3r17xfM86e7uhr93d3fL+vXrD1Or5g6+78t1110n559/vpx00kkiItLX1yfRaFRaWlpg3e7u7gOSK7eR+N73vidPPvmkPP744xPqtJ/2sWXLFvna174mN9xwg/z93/+9PP744/LhD39YotGoXH311fW+eK178Ejqp7/7u7+TsbExWbFihbiuK57nyec+9zm56qqrRES0n5TDzpx7gStTs3r1ann++eflwQcfPNxNmXP09vbKRz7yEbn77ruP6BSD0+H7vpx11lny+c9/XkRETj/9dHn++efl61//ulx99dWHuXVzhx/84Afyne98R26//XY58cQT5emnn5brrrtO5s+fr/2kzAnmnAm9o6NDXNedMDO4v79fenp6DlOr5gbXXnut3HnnnfKb3/xGFi5cWP97T0+PVCoVyWazsP6R1mfr1q2TgYEBOeOMMyQcDks4HJb7779fvvrVr0o4HJbu7m7tJxGZN2+enHDCCfC3448/Xnbs2CEiUu+LI/0e/Ju/+Rv5u7/7O3nnO98pJ598srzrXe+S66+/XtasWSMi2k/K4WfOvcCj0aiceeaZcs8999T/5vu+3HPPPbJq1arD2LLDRxAEcu2118qPf/xjuffee2XZsmVQf+aZZ0okEoE+27Bhg+zYseOI6rOLLrpInnvuOXn66afr/8866yy56qqr6svaTyLnn3/+BDfEjRs3ypIlS0REZNmyZdLT0wP9NDY2Jo8++ugR1U+FQkEcBx+RruuK7/si///27lBVlSgK47hBHJniCIJB2MFkMAuTfQDxCWyiFptFjILdZtGgYBLELkaDySCIDzBmg2LxO+HAcO/lwI17Nuf/g51mhcUqX9h7MSnmhASw/YruJ+v1Wp7nabFY6HK5qN1uKwgC3e93261Z0e12lcvldDgcFEVRfJ7PZ1zT6XRkjNF+v9fpdFIYhgrD0GLXyfDnK3SJOUnfK3bpdFrj8Vi3202r1Uq+72u5XMY1k8lEQRBou93qfD6r0Wj8uvWoVqulUqkUr5FtNhsVCgUNBoO4hjnBpkQGuCRNp1MZY5TJZFSr1XQ8Hm23ZE0qlfrxzOfzuOb1eqnX6ymfz8v3fTWbTUVRZK/phPg3wJnTt91up2q1Ks/zVKlUNJvN/vr++Xw0Go1ULBbleZ7q9bqu16ulbu14PB7q9/syxiibzapcLms4HOr9fsc1zAk28T9wAAAclLg7cAAA8H8EOAAADiLAAQBwEAEOAICDCHAAABxEgAMA4CACHAAABxHgAAA4iAAHAMBBBDgAAA4iwAEAcNAXu9L2lA/7ekwAAAAASUVORK5CYII=\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#划分训练集测试集\n",
    "(de_train,de_test)=de_dataset.split([0.8,0.2])\n",
    "#设置每个批处理的行数\n",
    "#drop_remainder确定是否删除最后一个可能不完整的批（default=False）。\n",
    "#如果为True，并且如果可用于生成最后一个批的batch_size行小于batch_size行，则这些行将被删除，并且不会传播到子节点。\n",
    "de_train=de_train.batch(cfg.batch_size, drop_remainder=True)\n",
    "#重复此数据集计数次数。\n",
    "de_test=de_test.batch(cfg.batch_size, drop_remainder=True)\n",
    "print('训练数据集数量：',de_train.get_dataset_size()*cfg.batch_size)#get_dataset_size()获取批处理的大小。\n",
    "print('测试数据集数量：',de_test.get_dataset_size()*cfg.batch_size)\n",
    "\n",
    "data_next=de_dataset.create_dict_iterator(output_numpy=True).__next__()\n",
    "print('通道数/图像长/宽：', data_next['image'].shape)\n",
    "print('一张图像的标签样式：', data_next['label'])  # 一共5类，用0-4的数字表达类别。\n",
    "\n",
    "plt.figure()\n",
    "plt.imshow(data_next['image'][0,...])\n",
    "plt.colorbar()\n",
    "plt.grid(False)\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "# 定义CNN图像识别网络\n",
    "class Identification_Net(nn.Cell):\n",
    "    def __init__(self, num_class=5,channel=3,dropout_ratio=0.5,trun_sigma=0.01):  # 一共分五类，图片通道数是3\n",
    "        super(Identification_Net, self).__init__()\n",
    "        self.num_class = num_class\n",
    "        self.channel = channel\n",
    "        self.dropout_ratio = dropout_ratio\n",
    "        #设置卷积层\n",
    "        self.conv1 = nn.Conv2d(self.channel, 32,\n",
    "                               kernel_size=5, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma),bias_init='zeros')\n",
    "        #设置ReLU激活函数\n",
    "        self.relu = nn.ReLU()\n",
    "        #设置最大池化层\n",
    "        self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2,pad_mode=\"valid\")\n",
    "        self.conv2 = nn.Conv2d(32, 64,\n",
    "                               kernel_size=5, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma),bias_init='zeros')\n",
    "        self.conv3 = nn.Conv2d(64, 128,\n",
    "                               kernel_size=3, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma),bias_init='zeros')\n",
    "        self.conv4 = nn.Conv2d(128, 128,\n",
    "                               kernel_size=3, stride=1, padding=0,\n",
    "                               has_bias=True, pad_mode=\"same\",\n",
    "                               weight_init=TruncatedNormal(sigma=trun_sigma), bias_init='zeros')\n",
    "        self.flatten = nn.Flatten()\n",
    "        self.fc1 = nn.Dense(6*6*128, 1024,weight_init =TruncatedNormal(sigma=trun_sigma),bias_init = 0.1)\n",
    "        self.dropout = nn.Dropout(self.dropout_ratio)\n",
    "        self.fc2 = nn.Dense(1024, 512, weight_init=TruncatedNormal(sigma=trun_sigma), bias_init=0.1)\n",
    "        self.fc3 = nn.Dense(512, self.num_class, weight_init=TruncatedNormal(sigma=trun_sigma), bias_init=0.1)\n",
    "    #构建模型\n",
    "    def construct(self, x):\n",
    "        x = self.conv1(x)\n",
    "        #print(x.shape)\n",
    "        x = self.relu(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.conv2(x)\n",
    "        x = self.relu(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.conv3(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.conv4(x)\n",
    "        x = self.max_pool2d(x)\n",
    "        x = self.flatten(x)\n",
    "        x = self.fc1(x)\n",
    "        x = self.relu(x)\n",
    "        #print(x.shape)\n",
    "        x = self.dropout(x)\n",
    "        x = self.fc2(x)\n",
    "        x = self.relu(x)\n",
    "        x = self.dropout(x)\n",
    "        x = self.fc3(x)\n",
    "        return x"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============== Starting Training ==============\n",
      "epoch: 10 step: 91, loss is 0.8589781522750854\n",
      "epoch: 20 step: 91, loss is 0.8967658281326294\n",
      "epoch: 30 step: 91, loss is 0.7961768507957458\n",
      "epoch: 40 step: 91, loss is 0.7429560422897339\n",
      "epoch: 50 step: 91, loss is 0.5215052366256714\n",
      "epoch: 60 step: 91, loss is 0.7103931903839111\n",
      "epoch: 70 step: 91, loss is 0.5275301933288574\n",
      "epoch: 80 step: 91, loss is 0.5802933573722839\n",
      "epoch: 90 step: 91, loss is 0.533424437046051\n",
      "epoch: 100 step: 91, loss is 0.47834575176239014\n",
      "epoch: 110 step: 91, loss is 0.5692586898803711\n",
      "epoch: 120 step: 91, loss is 0.4645657241344452\n",
      "epoch: 130 step: 91, loss is 0.4905557632446289\n",
      "epoch: 140 step: 91, loss is 0.2811037003993988\n",
      "epoch: 150 step: 91, loss is 0.4835257828235626\n",
      "epoch: 160 step: 91, loss is 0.6735458970069885\n",
      "epoch: 170 step: 91, loss is 0.46533751487731934\n",
      "epoch: 180 step: 91, loss is 0.3770293593406677\n",
      "epoch: 190 step: 91, loss is 0.3706494867801666\n",
      "epoch: 200 step: 91, loss is 0.5836012959480286\n",
      "epoch: 210 step: 91, loss is 0.6548966765403748\n",
      "epoch: 220 step: 91, loss is 0.5581687688827515\n",
      "epoch: 230 step: 91, loss is 0.3902776539325714\n",
      "epoch: 240 step: 91, loss is 0.5555097460746765\n",
      "epoch: 250 step: 91, loss is 0.21910032629966736\n",
      "epoch: 260 step: 91, loss is 0.23563607037067413\n",
      "epoch: 270 step: 91, loss is 0.40919849276542664\n",
      "epoch: 280 step: 91, loss is 0.38654625415802\n",
      "epoch: 290 step: 91, loss is 0.5929896235466003\n",
      "epoch: 300 step: 91, loss is 0.28868597745895386\n",
      "epoch: 310 step: 91, loss is 0.12794381380081177\n",
      "epoch: 320 step: 91, loss is 0.5262982845306396\n",
      "epoch: 330 step: 91, loss is 0.27924537658691406\n",
      "epoch: 340 step: 91, loss is 0.09028363227844238\n",
      "epoch: 350 step: 91, loss is 0.13167063891887665\n",
      "epoch: 360 step: 91, loss is 0.04392213374376297\n",
      "epoch: 370 step: 91, loss is 0.20765355229377747\n",
      "epoch: 380 step: 91, loss is 0.28436505794525146\n",
      "epoch: 390 step: 91, loss is 0.49451377987861633\n",
      "epoch: 400 step: 91, loss is 0.35591021180152893\n",
      "{'acc': 0.8991477272727273}\n"
     ]
    }
   ],
   "source": [
    "net=Identification_Net(num_class=cfg.num_class, channel=cfg.channel, dropout_ratio=cfg.dropout_ratio)\n",
    "#计算softmax交叉熵。\n",
    "net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction=\"mean\")\n",
    "#opt\n",
    "fc_weight_params = list(filter(lambda x: 'fc' in x.name and 'weight' in x.name, net.trainable_params()))\n",
    "other_params=list(filter(lambda x: 'fc' not in x.name or 'weight' not in x.name, net.trainable_params()))\n",
    "group_params = [{'params': fc_weight_params, 'weight_decay': cfg.weight_decay},\n",
    "                {'params': other_params},\n",
    "                {'order_params': net.trainable_params()}]\n",
    "#设置Adam优化器\n",
    "net_opt = nn.Adam(group_params, learning_rate=cfg.lr, weight_decay=0.0)\n",
    "#net_opt = nn.Adam(params=net.trainable_params(), learning_rate=cfg.lr, weight_decay=0.1)\n",
    "\n",
    "model = Model(net, loss_fn=net_loss, optimizer=net_opt, metrics={\"acc\"})\n",
    "loss_cb = LossMonitor(per_print_times=de_train.get_dataset_size()*10)\n",
    "config_ck = CheckpointConfig(save_checkpoint_steps=cfg.save_checkpoint_steps,\n",
    "                             keep_checkpoint_max=cfg.keep_checkpoint_max)\n",
    "ckpoint_cb = ModelCheckpoint(prefix=cfg.output_prefix, directory=cfg.output_directory, config=config_ck)\n",
    "print(\"============== Starting Training ==============\")\n",
    "model.train(cfg.epoch_size, de_train, callbacks=[loss_cb, ckpoint_cb], dataset_sink_mode=True)\n",
    "\n",
    "# 使用测试集评估模型，打印总体准确率\n",
    "metric = model.eval(de_test)\n",
    "print(metric)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "For 'load_checkpoint', the checkpoint file: /media/kongfz/Document/AI_MAJOR_CLASS/PYCHARM_PROJECTS/MindsporeDL/CNN/flower/checkpoint_classification-400_91.ckpt does not exist, please check whether the 'ckpt_file_name' is correct.",
     "output_type": "error",
     "traceback": [
      "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[0;31mValueError\u001B[0m                                Traceback (most recent call last)",
      "Input \u001B[0;32mIn [11]\u001B[0m, in \u001B[0;36m<cell line: 5>\u001B[0;34m()\u001B[0m\n\u001B[1;32m      3\u001B[0m CKPT \u001B[38;5;241m=\u001B[39m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mjoin(cfg\u001B[38;5;241m.\u001B[39moutput_directory,cfg\u001B[38;5;241m.\u001B[39moutput_prefix\u001B[38;5;241m+\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m-\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;241m+\u001B[39m\u001B[38;5;28mstr\u001B[39m(cfg\u001B[38;5;241m.\u001B[39mepoch_size)\u001B[38;5;241m+\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m_\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;241m+\u001B[39m\u001B[38;5;28mstr\u001B[39m(de_train\u001B[38;5;241m.\u001B[39mget_dataset_size())\u001B[38;5;241m+\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m.ckpt\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m      4\u001B[0m net \u001B[38;5;241m=\u001B[39m Identification_Net(num_class\u001B[38;5;241m=\u001B[39mcfg\u001B[38;5;241m.\u001B[39mnum_class, channel\u001B[38;5;241m=\u001B[39mcfg\u001B[38;5;241m.\u001B[39mchannel, dropout_ratio\u001B[38;5;241m=\u001B[39mcfg\u001B[38;5;241m.\u001B[39mdropout_ratio)\n\u001B[0;32m----> 5\u001B[0m \u001B[43mload_checkpoint\u001B[49m\u001B[43m(\u001B[49m\u001B[43mCKPT\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mnet\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnet\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m      6\u001B[0m model \u001B[38;5;241m=\u001B[39m Model(net)\n",
      "File \u001B[0;32m~/.conda/envs/mindspore/lib/python3.9/site-packages/mindspore/train/serialization.py:505\u001B[0m, in \u001B[0;36mload_checkpoint\u001B[0;34m(ckpt_file_name, net, strict_load, filter_prefix, dec_key, dec_mode, specify_prefix)\u001B[0m\n\u001B[1;32m    461\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mload_checkpoint\u001B[39m(ckpt_file_name, net\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m, strict_load\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m, filter_prefix\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[1;32m    462\u001B[0m                     dec_key\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m, dec_mode\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mAES-GCM\u001B[39m\u001B[38;5;124m\"\u001B[39m, specify_prefix\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m):\n\u001B[1;32m    463\u001B[0m     \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[1;32m    464\u001B[0m \u001B[38;5;124;03m    Load checkpoint info from a specified file.\u001B[39;00m\n\u001B[1;32m    465\u001B[0m \n\u001B[0;32m   (...)\u001B[0m\n\u001B[1;32m    503\u001B[0m \u001B[38;5;124;03m        Parameter (name=conv2.weight, shape=(16, 6, 5, 5), dtype=Float32, requires_grad=True)\u001B[39;00m\n\u001B[1;32m    504\u001B[0m \u001B[38;5;124;03m    \"\"\"\u001B[39;00m\n\u001B[0;32m--> 505\u001B[0m     ckpt_file_name \u001B[38;5;241m=\u001B[39m \u001B[43m_check_ckpt_file_name\u001B[49m\u001B[43m(\u001B[49m\u001B[43mckpt_file_name\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m    506\u001B[0m     specify_prefix \u001B[38;5;241m=\u001B[39m _check_prefix(specify_prefix)\n\u001B[1;32m    507\u001B[0m     filter_prefix \u001B[38;5;241m=\u001B[39m _check_prefix(filter_prefix)\n",
      "File \u001B[0;32m~/.conda/envs/mindspore/lib/python3.9/site-packages/mindspore/train/serialization.py:573\u001B[0m, in \u001B[0;36m_check_ckpt_file_name\u001B[0;34m(ckpt_file_name)\u001B[0m\n\u001B[1;32m    571\u001B[0m ckpt_file_name \u001B[38;5;241m=\u001B[39m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mrealpath(ckpt_file_name)\n\u001B[1;32m    572\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mexists(ckpt_file_name):\n\u001B[0;32m--> 573\u001B[0m     \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mFor \u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mload_checkpoint\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m, the checkpoint file: \u001B[39m\u001B[38;5;132;01m{}\u001B[39;00m\u001B[38;5;124m does not exist, please check \u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m    574\u001B[0m                      \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mwhether the \u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mckpt_file_name\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m is correct.\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;241m.\u001B[39mformat(ckpt_file_name))\n\u001B[1;32m    576\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m ckpt_file_name\n",
      "\u001B[0;31mValueError\u001B[0m: For 'load_checkpoint', the checkpoint file: /media/kongfz/Document/AI_MAJOR_CLASS/PYCHARM_PROJECTS/MindsporeDL/CNN/flower/checkpoint_classification-400_91.ckpt does not exist, please check whether the 'ckpt_file_name' is correct."
     ]
    }
   ],
   "source": [
    "#加载模型\n",
    "import os\n",
    "CKPT = os.path.join(cfg.output_directory,cfg.output_prefix+'-'+str(cfg.epoch_size)+'_'+str(de_train.get_dataset_size())+'.ckpt')\n",
    "net = Identification_Net(num_class=cfg.num_class, channel=cfg.channel, dropout_ratio=cfg.dropout_ratio)\n",
    "load_checkpoint(CKPT, net=net)\n",
    "model = Model(net)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [],
   "source": [
    "#加载模型\n",
    "import os\n",
    "CKPT = 'checkpoint_classification_1-400_91.ckpt'\n",
    "net = Identification_Net(num_class=cfg.num_class, channel=cfg.channel, dropout_ratio=cfg.dropout_ratio)\n",
    "load_checkpoint(CKPT, net=net)\n",
    "model = Model(net)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第0个sample预测结果： dandelion    真实结果： dandelion\n",
      "第1个sample预测结果： sunflowers    真实结果： sunflowers\n",
      "第2个sample预测结果： roses    真实结果： roses\n",
      "第3个sample预测结果： sunflowers    真实结果： sunflowers\n",
      "第4个sample预测结果： dandelion    真实结果： dandelion\n",
      "第5个sample预测结果： dandelion    真实结果： dandelion\n",
      "第6个sample预测结果： daisy    真实结果： daisy\n",
      "第7个sample预测结果： sunflowers    真实结果： sunflowers\n",
      "第8个sample预测结果： roses    真实结果： roses\n",
      "第9个sample预测结果： tulips    真实结果： tulips\n"
     ]
    }
   ],
   "source": [
    "# 预测\n",
    "class_names = {0:'daisy',1:'dandelion',2:'roses',3:'sunflowers',4:'tulips'}\n",
    "test_ = de_test.create_dict_iterator().__next__()\n",
    "test = Tensor(test_['image'], mindspore.float32)\n",
    "predictions = model.predict(test)\n",
    "predictions = predictions.asnumpy()\n",
    "true_label = test_['label'].asnumpy()\n",
    "\n",
    "#显示预测结果\n",
    "for i in range(10):\n",
    "    p_np = predictions[i, :]\n",
    "    pre_label = np.argmax(p_np)\n",
    "    print('第' + str(i) + '个sample预测结果：', class_names[pre_label], '   真实结果：', class_names[true_label[i]])"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}